5  Evaluación de pruebas diagnósticas

5.1 Generalidades

Una prueba diagnóstica es un proceso diseñado para detectar lesiones, antígenos, anticuerpos, sustancias tóxicas, organismos o marcadores genéticos.

Debido a su uso, aplicación o ambos, las pruebas pueden ser: filtro o tamiz y diagnósticas. Las pruebas filtro son aplicadas a poblaciones aparentemente sanas, para detectar infección o enfermedad subclínica y las diagnósticas a poblaciones afectadas.

Por regla general, se dice que las pruebas filtro se llevan a cabo en poblaciones grandes y son seguidas por pruebas diagnósticas en aquellos animales que resulten positivos. (Jaramillo Arango 2010)

Se puede hacer evaluaciones con datos categóricos o continuos, aquí veremos los casos correspondientes a datos categóricos dicotómicos (positivo, negativo).

La evaluación de las pruebas se realiza mediante tablas de 2 X 2, con la siguiente disposición:

Filas \ Columnas Enfermos Sanos Total filas
Positivos a (VP) b (FP) a + b (TP)
Negativos c (FN) d (VN) c + d (TN)
Total columnas a + c (TE) b + d (TS) a + b + c + d (N)

Donde:

VP = Verdaderos Positivos

VN = Verdaderos Negativos

FN = Falsos Negativos

FP = Falsos Positivos

TE = Total Enfermos

TS = Total Sanos

TP = Total Positivos

TN = Total Negativos

N = Pruebas Totales

5.2 Validez

La validez de una prueba se define como su capacidad para diferenciar entre los que tienen una enfermedad y los que no la tienen.

La validez posee dos componentes: sensibilidad y especificidad.

La sensibilidad de la prueba se define como la capacidad de la prueba para identificar correctamente a aquellos que tienen la enfermedad.

La especificidad de la prueba se define como la capacidad de la prueba para identificar correctamente a aquellos que no tienen la enfermedad. (Celentano 2019)

\[\begin{equation}{ } Validez = \frac{VP + VN} {N} \end{equation}\] \[\begin{equation}{ } Sensibilidad = \frac{VP} {TE} \end{equation}\] \[\begin{equation}{ } Especificidad = \frac{VN} {TS} \end{equation}\]

Ejemplo: Dada la siguiente tabla

pd <- matrix(data = c(15, 5, 2, 550), byrow = T, nrow = 2,
       dimnames = list(c("positivos", "negativos"), c("enfermos", "sanos")
                       )
       )

pd
          enfermos sanos
positivos       15     5
negativos        2   550
  • ¿Cuál es la validez o exactitud de la prueba?
(pd[1] + pd[4]) / sum(pd)
[1] 0.9877622

Es decir 98.77%

  • ¿Cuál es la sensibilidad y especificidad de la prueba?

Usamos el comando prop.table y dentro del paréntesis especificamos “margin = 2” para que las proporciones se calculen por columnas.

En la tabla creada, la sensibilidad será el cuadrante superior izquierdo y la especificidad será el cuadrante inferior derecho.

prop.table(x = pd, margin = 2)
           enfermos       sanos
positivos 0.8823529 0.009009009
negativos 0.1176471 0.990990991

Es decir que la sensibilidad es del 88.23% y la especificidad del 99.09%

5.3 Valores predictivos

El valor predictivo puede definirse como la probabilidad de que el resultado de la prueba refleje el estado verdadero.

Hay valores predictivos positivos (VPP) y valores predictivos negativos (VPN).

El valor predictivo positivo es la probabilidad de que un individuo con resultado positivo a la prueba esté enfermo.

El valor predictivo negativo es la probabilidad de que un individuo con resultado negativo a la prueba esté sano. (Jaramillo Arango 2010)

\[\begin{equation}{} VPP = \frac{VP} {TP} \end{equation}\] \[\begin{equation}{} VPN = \frac{VN} { TN} \end{equation}\]

La validez de las pruebas diagnósticas; es decir su sensibilidad y especificidad, son inherentes a ellas; los valores predictivos en cambio, dependen fuertemente de la prevalencia.

Veamos los siguientes ejemplos con diferentes prevalencias pero con la misma sensibilidad y especificidad:

  • Sensibilidad 90%, Especificidad 95%, Prevalencia 5%
prev_5 <- matrix(data = c(45, 47, 5, 903), nrow = 2, byrow = T)

# Validez
(val_5 <- (prev_5[1] + prev_5[4]) / sum(prev_5))
[1] 0.948
# VPP
(vpp_5 <- prop.table(prev_5, 1)[1])
[1] 0.4891304
# VPN
(vpn_5 <- prop.table(prev_5, 2)[4])
[1] 0.9505263
  • Sensibilidad 90%, Especificidad 95%, Prevalencia 50%
prev_50 <- matrix(data = c(450, 25, 50, 475), nrow = 2, byrow = T)

# Validez
(val_50 <- (prev_50[1] + prev_50[4]) / sum(prev_50))
[1] 0.925
# VPP
(vpp_50 <- prop.table(prev_50, 1)[1])
[1] 0.9473684
# VPN
(vpn_50 <- prop.table(prev_50, 2)[4])
[1] 0.95
  • Sensibilidad 90%, Especificidad 95%, Prevalencia 95%

    prev_95 <- matrix(data = c(855, 2, 95, 48), nrow = 2, byrow = T)
    
    # Validez
    (val_95 <- (prev_95[1] + prev_95[4]) / sum(prev_50))
    [1] 0.903
    # VPP
    (vpp_95 <- prop.table(prev_95, 1)[1])
    [1] 0.9976663
    # VPN
    (vpn_95 <- prop.table(prev_95, 2)[4])
    [1] 0.96
data.frame(Medida = c("Validez", "VPP", "VPN"),
           Prevalencia_5 = round(c(val_5, vpp_5, vpn_5), 4),
           Prevalencia_50 = round(c(val_50, vpp_50, vpn_50), 4),
           Prevalencia_95 = round(c(val_95, vpp_95, vpn_95), 4)
)
   Medida Prevalencia_5 Prevalencia_50 Prevalencia_95
1 Validez        0.9480         0.9250         0.9030
2     VPP        0.4891         0.9474         0.9977
3     VPN        0.9505         0.9500         0.9600
data.frame(Medida = c("Sensibilidad", "Especificidad", "Validez", "VPP", "VPN"),
           Prevalencia_5 = round(c(0.9, 0.95,val_5, vpp_5, vpn_5), 4),
           Prevalencia_50 = round(c(0.9, 0.95, val_50, vpp_50, vpn_50), 4),
           Prevalencia_95 = round(c(0.9, 0.95, val_95, vpp_95, vpn_95), 4)
)
         Medida Prevalencia_5 Prevalencia_50 Prevalencia_95
1  Sensibilidad        0.9000         0.9000         0.9000
2 Especificidad        0.9500         0.9500         0.9500
3       Validez        0.9480         0.9250         0.9030
4           VPP        0.4891         0.9474         0.9977
5           VPN        0.9505         0.9500         0.9600

Conclusiones:

  • Con una baja prevalencia, la validez se acerca a la especificidad.

  • Con una alta prevalencia, la validez se acerca a la sensibilidad.

  • A mayor prevalencia, mayor valor predictivo positivo.